package main

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"time"
)

// gorm 入门

type Account struct {
	ID        int64     `gorm:"column:id;primary_key"`
	UserId    string    `gorm:"column:user_id"`
	Password  string    `gorm:"column:password"`
	Nickname  string    `gorm:"column:nickname"`
	CreatedAt time.Time `gorm:"column:created_at"`
	UpdatedAt time.Time `gorm:"column:updated_at"`
}

// 显示的表名
func (a Account) TableName() string {
	return "account"
}

func demo() {

	db := connDB()
	var accounts []Account
	// 查询多条数据
	if err := db.Table("account").Find(&accounts).Error; err != nil {
		fmt.Println(err)
		return
	}

	// 查询单条
	var rowData Account
	if err := db.Where("id = ?", 3).First(&rowData).Error; err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println("first", rowData)
	fmt.Println(accounts)

}

func connDB() *gorm.DB {
	mysqlDB, err := gorm.Open(mysql.Open("root:123456@tcp(127.0.0.1:3307)/cms_account?charset=utf8mb4&parseTime=true&loc=Local"))
	if err != nil {
		panic(any(err))
	}
	db, err := mysqlDB.DB()
	if err != nil {
		panic(any(err))
	}
	// 最大连接数
	db.SetMaxOpenConns(4)
	db.SetMaxIdleConns(2)
	// 启动debug模式
	mysqlDB = mysqlDB.Debug()

	return mysqlDB

}
